cmake_minimum_required(VERSION 3.10)
project(main)

# 0.启用调试符号（GDB 需要）
set(CMAKE_BUILD_TYPE Debug)  # 设置为 Debug 模式（自动添加 -g）
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g3 -ggdb")  # 强制禁用优化并生成 GDB 专用符号
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")  # Release 模式用 -O3

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# 1.ZeroMQ配置
set(ZMQ_ROOT       ${CMAKE_SOURCE_DIR}/third_party/zeroMQ)
set(ZMQ_INCLUDE_DIR ${ZMQ_ROOT}/include)
set(ZMQ_LIBRARY_DIR ${ZMQ_ROOT}/lib/x86_64-linux-gnu)
find_library(ZMQ_LIB zmq HINTS ${ZMQ_LIBRARY_DIR} REQUIRED)

# 2.MessagePack配置
find_package(msgpack  REQUIRED)

# 3.输出路径配置
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/../engine)# 可执行文件输出目录
set(LIBRARY_OUTPUT_PATH  ${PROJECT_BINARY_DIR}/../build/lib)# 库文件输出目录

# 4.全局头文件 & 链接目录
include_directories(
    ${PROJECT_SOURCE_DIR}/include # 包含.pb.h头文件
    ${ZMQ_INCLUDE_DIR} # 包含zmq的头文件
    ${msgpack_INCLUDE_DIRS} # 包含MessagePack的头文件
)

link_directories(
    ${ZMQ_LIBRARY_DIR}
    ${msgpack_LIBRARY_DIRS}
)

# 5.子模块（除utils外，各自生成一个可执行程序）
# db 模块（Go，不经 CMake 编译）
add_subdirectory(utils) # 先编译工具函数的源文件
#add_subdirectory(log) # 暂时屏蔽
#add_subdirectory(logic) # 暂时屏蔽
add_subdirectory(net)
add_subdirectory(work)

# 6.全局链接库（可在子模块中通过 target_link_libraries 使用）
set(PROJECT_COMMON_LIBS
    ${ZMQ_LIB}
    msgpackc-cxx    # MessagePack C++ 库
    # 其他公共库...
)


